The present invention generally relates to software testing, and more particularly relates to testing functional correctness and idempotence of software automation scripts.
Due to the competitiveness of the computing industry, software developers are pressured to quickly deliver new code releases and features. In contrast, operators are expected to keep production systems stable at all times, consuming new code at a slower-than-ideal pace. This phenomenon is chiefly caused by operators' developing automation code to deploy applications to production without following the rigor of software engineering. Organizations have started to adopt Infrastructure as Code (IaC) tools to help operators write automation code more efficiently to overcome the development operations barrier. Automation code written with such tools generally need to comprise a series of idempotent steps to guarantee repeatability and convergence to a desired state. However, the idempotent abstractions supported by such tools are frequently not sufficient for complex tasks, causing traditional scripting to be embedded in IaC code.